#pragma once

#include "local_client.hpp"
#include "SendTaskQueue.hpp"

class send_to_qml
{
public:
    send_to_qml(/* args */);
    ~send_to_qml();
    // 这个函数有可能被不同的线程调用
    static void send_text(connection_hdl h, std::string s)
    {
        //std::cout << "send_text 函数开头" << std::endl;
        // 1. 包装任务，放入队列
        SendTask send_task(h,s);
        SendTaskQueue::getInstance()->push(send_task);
        // 2. 给本地服务器发送 ping, 提醒其发送任务
        if(!c_connected_)
        {
            //std::cout << "本地客户端未连接，先连接上" << std::endl;
            c_.run();
            c_connected_ = true;
        }
        // std::cout << "准备ping" << std::endl;
        c_.ping();
    }

private:
    static local_client c_;
    static bool c_connected_; // 表示 c_ 是否连接到了本地的服务器
};
local_client send_to_qml::c_;
bool send_to_qml::c_connected_ = false;

send_to_qml::send_to_qml(/* args */)
{
}

send_to_qml::~send_to_qml()
{
}
